Фрагмент для ознакомления
1
Содержание
Введение……………………………………………………………………......….3
1.Описаниеи проектирование архитектуры программного обеспечения………………………………………………………………,....…….4
1.1.Описание и формализация требований к программному обеспечению………………………………………………………………......…...5
1.2.Проектирование архитектуры программного обеспечения………….........8.
2.Реализация программного обеспечения. ……………………….…….....……9
3.Тестирование программного обеспечения…………………………….....…..22
3.1.Разработка test-units……………………………………………………...…..22
3.2.Результаты тестирования программного обеспечения………….……..….26
Заключение………………………………………………………………………27
Список используемой литературы……………………………………………..28
Приложение А. Листинг рабочего кода разработанного приложения………29
Приложение Б Программный код, который содержит набор тест кейсов для страницы "muzikalniy salon"……………………………………………………31
Фрагмент для ознакомления
2
Введение
Потребность человека всегда быть в курсе событий выводит информационные технологии на прямую линию для создания новых устройств и гаджетов. Неудобство использования компьютеров и ноутбуков вызывает появление различных мини-компьютеров, смартфонов и коммуникаторов, которые основаны на одной и той же операционной системе. Лидирующие позиции сегодня занимают платформы Android и iPhone. Но полноценно работать эти платформы могут только при одном условии - если для них были разработаны мобильные приложения
Полученное на практику задание - разработать программное обеспечение для платформы Android, информационное приложение для отображения прогнозов погоды.
Android - операционная система для коммуникаторов, планшетных компьютеров, цифровых плееров, цифровых фоторамок, наручных часов, нетбуков и смартбуков на базе ядра Linux. Java является основным языком разработки..
. Основная цель курса – разработка программы поиска по каталогу «Музыкальный салон».
В программе используются функции не только для поддержки разработки, но и для уменьшения объема исходного кода.
Результатами работы функций будет вывод необходимой информации.
1. Обзор мобильной операционной системы Android
Операционная система Android представляет собой открытую платформу, то есть она не привязана к одному поставщику. Это помогает Android доминировать на рынке, поскольку любой производитель и поставщик может создавать и продавать устройства, поддерживающие эту операционную систему. Исходный код Android доступен для изучения и изменения любому желающему. Это помогает создавать множество удобных интерфейсов и приложений для устройств Android [1].
Операционная система Android может использоваться на устройствах с разными размерами экрана, функциями и другими техническими характеристиками. Итак, он поставляется с набором инструментов, которые помогают приложению адаптироваться к конкретному устройству. Политика Google более строгая. Например, если приложению требуется передняя камера, только телефоны с фронтальной камерой увидят это приложение в Android Market.Краткое описание операционной системы Android.
Открытая платформа, такая как ОС Android, означает, что операционная система не привязана к какому-либо конкретному поставщику. Любой производитель или поставщик устройств может создавать и продавать устройства, совместимые с Android, что помогает компании завоевать доминирование на рынке. Любой может получить доступ к исходному коду для изучения или модификации Android. Подробнее. Это значительно облегчает возможность создания удобных интерфейсов и приложений для Android-устройств.
Наличие ряда инструментов в ОС Android обеспечивает ее совместимость с экранами различных размеров и техническими характеристиками, что позволяет использовать ее на любом устройстве. Рекомендации Google более строгие. Только телефоны с фронтальной камерой могут отображать на Android Market приложение, для которого это необходимо.
1.1 Описание и проектирование архитектуры программного обеспечения
Целью раб оты является раз работка при ложения на операционной сис теме Android. Для до стижения это й цели буд ет ис пользована среда про грамирования Java.
Основными за дачами, кот орые до лжны бы ть ре шены во время вы полнения раб оты, являются:
Построение алгоритмов - на иболее эффективная математическая модел ь мож ет бы ть при менена к компьютеру в качестве алгоритмической модел и.
Для это й цели мож но ис пользовать язык блок-схем.программирование - это про граммирование на определенном языке в определенной сис теме про граммирования.
Программирование включает в себя следующие вид ы раб от: вы бор языка про граммирования.уточните, как орган изованы дан ные. со храняет алгоритм на вы бранном языке про граммирования. практическая раз работка по льзовательского инт ерфейса. тестирование и от ладка про грамм.
Отладка про грамм - это про цесс про верки раб оты про граммы и ис правления ошибок, об наруженных в ходе это го про цесса.
Используемая сис тема про граммирования по зволяет об наруживать ошибки, связанные с на рушениями прав ил на писания про грамм на языке про граммирования.
Пользователь по лучает со общение об ошибке, ис правляет его и пытается за пустить про грамму снова.
Это операционная сис тема, и раз работчикам при ложений не обходимо знать ее особенности и нюансы, чтобы до биться хороших ре зультатов.
Существовать ряд за дач, кот орые не обходимо учитывать в про цессе про ектирования. Кратко пер ечислю:
Для установки при ложения требуется на два (а то и в четыре) бол ьше места, чем ис ходный раз мер при ложения;
Скорость раб оты, с файлами на карте встроенная флэш-память уме ньшена на в де сять раз по мер е уме ньшения сво бодного про странства;< br>
Каждый про цесс мож ет ис пользовать до 16 МБ (иногда 24 МБ) ОЗУ.
На базе Linux. Между при ложением и ядром есть уровень API и уровень библиотеки со бственного кода. Это при ложение раб отает на виртуальной машине Java (виртуальная машина Dalvik).
На Android мож но за пускать множество при ложений. Но один из них является осн овным и за нимает вес ь экран.
Из текущего при ложения вы мож ете пер ейти к пре дыдущему при ложению или за пустить нов ое. Это по хоже на браузер с ис торией про смотров.
Каждый экран по льзовательского инт ерфейса пре дставлен класс ом акт ивности в коде. В про цессах со держатся раз личные вид ы де ятельности. Действие мож ет даже пер ежить про цесс.
Действие мож но пре рвать и во зобновить с со хранением все й не обходимой инф ормации. Он ис пользует специальный механизм для описания де йствий, осн ованных на на мерении. Когда вам нужно вы полнить де йствие (позвонить, от править электронное письмо, по казать окно), это на мерение буд ет вы звано.
Android так же со держит сервисы, аналогичные де монам в Linux, для вы полнения не обходимых де йствий, установленных в фоновом ре жиме (например, во спроизведение музыка). Контент-провайдеры ис пользуются для об мена дан ными между при ложениями.
Для дан ной раб оты ис пользовались по ставщики дан ных о местоположении и по ложении в про странстве по льзовательского устр ойства.
это одна операционная сис тема.
Разработчик при ложения до лжен знать его особенности и нюансы, чтобы до биться хороших ре зультатов. Существует ряд за дач, кот орые не обходимо учитывать в про цессе про ектирования. Кратко пер ечислю:
Для установки при ложения требуется на два (а то и в четыре) бол ьше места, чем ис ходный раз мер при ложения;
Скорость раб оты с файлами на карте Встроенная флэш-память уме ньшена на в де сять раз по мер е уме ньшения сво бодного про странства;< br>Каждый про цесс мож ет ис пользовать до 16 МБ (иногда 24 МБ) ОЗУ.
На базе Linux. Между при ложением и ядром есть уровень API и уровень библиотеки со бственного кода. Это при ложение раб отает на виртуальной машине Java (виртуальная машина Dalvik).
На Android мож но за пускать множество при ложений. Но один из них является осн овным и за нимает вес ь экран. Из текущего при ложения вы мож ете пер ейти к пре дыдущему при ложению или за пустить нов ое. Это по хоже на браузер с ис торией про смотров.
Каждый экран по льзовательского инт ерфейса пре дставлен класс ом акт ивности в коде.
В про цессах со держатся раз личные вид ы де ятельности. Действие мож ет даже пер ежить Процесс. Действие мож но пре рвать и во зобновить с со хранением все й не обходимой инф ормации. Он ис пользует специальный механизм для
Фрагмент для ознакомления
3
Список использованной литературы и источников
[1] Felker, Donn, and Joshua Dobbs. Android App Development for Dummies. 3rd ed. Vol. 357, Indianapolis, Indiana, Wiley Publishing, Inc., 2011.
[2] Лозовский В. iOS и Android «съели» 98,4% рынка смартфонов [Электронный ресурс]. 2016. URL: https://www.iphones.ru/iNotes/538609 (дата обращения: 18.02.2017).
[3] ТопОбзор. Обзор 10+ облачных хранилищ данных [Электронный ресурс]. 2016. URL: http://www.topobzor.com/obzor-10-oblachnyx-xranilishh-dannyx/.html (дата обращения: 18.02.2017).
[4] AWS Storage Services Overview. A Look at Storage Services Offered by AWS. Vol. 48, Amazon Web Services, Inc., December 2016.
[5] Amazon Web Services. Amazon CloudFront - Сеть доставки контента (CDN) [Электронный ресурс]. URL: https://aws.amazon.com/ru/cloudfront/?nc2=h_m1 (дата обращения: 20.03.2017).
[6] AWS Mobile SDK. Set Up the AWS Mobile SDK for Android [Электронный ресурс]. URL: http://docs.aws.amazon.com/mobile/sdkforandroid/developerguide/setup.html (дата обращения: 20.03.2017).
[7] AWS Mobile SDK. Store and Retrieve Files with Amazon S3 [Электронный ресурс]. URL: https://docs.aws.amazon.com/mobile/sdkforandroid/developerguide/s3transferutility.html (дата обращения: 20.03.2017).
[8] Android Developers [Электронный ресурс]. 2016. URL: http://developer.android.com (дата обращения: 05.02.2017).
[9] Firebase. Authentication [Электронный ресурс]. 2016. URL: https://firebase.google.com (дата обращения: 05.04.2017).
10. Software testing training and stoftware testing services. [Электронный ресуср]. Режим доступа: http://www.rbcs-us.com/
Приложение A
Кодзагрузкифотографии,,музикалный салон сервер (AmazonImageUploadManager.java):
import android.content.Context;android.util.Log;com.amazonaws.auth.CognitoCachingCredentialsProvider;com.amazonaws.mobileconnectors.s3.transferutility.TransferListener;com.amazonaws.mobileconnectors.s3.transferutility.TransferObserver;com.amazonaws.mobileconnectors.s3.transferutility.TransferState;com.amazonaws.mobileconnectors.s3.transferutility.TransferUtility;com.amazonaws.regions.Regions;com.amazonaws.services.s3.AmazonS3Client;java.io.File;rx.Observable;rx.Subscriber;static android.content.ContentValues.TAG;class AmazonImageUploadManager {mContext;AmazonImageUploadManager(Context mContext) {.mContext = mContext;
}Observable getUploadFileObservable(final File uploadFile, final String filePath) {Observable.create(new Observable.OnSubscribe() {
@Overridevoid call(final Subscriber super String> subscriber) {credentialsProvider = new CognitoCachingCredentialsProvider(.getApplicationContext(),.getString(R.string.aws_bucket_pool_id),.EU_CENTRAL_1
);Client s3Client = new AmazonS3Client(credentialsProvider);transferUtility = new TransferUtility(s3Client, mContext.getApplicationContext());.d(TAG, "local file = " + uploadFile.getPath());observer = transferUtility.upload(.getString(R.string.aws_bucket_name),,
);.d(TAG, "uploading " + "https://s3.eu-central-1.amazonaws.com/" + mContext.getString(R.string.aws_bucket_name) + "/" + filePath);.setTransferListener(new TransferListener() {
@Overridevoid onStateChanged(int id, TransferState state) {(state == TransferState.COMPLETED) {.onNext("https://s3.eu-central-1.amazonaws.com/" + mContext.getString(R.string.aws_bucket_name) + "/" + filePath);
}
}
Код класса ItemDecoration.java, позволяющий располагать фотографии музикалный салон на экране приложения по 3 в строке:
public class ItemDecoration extends RecyclerView.ItemDecoration {int mSpace;ItemDecoration(int space) {= space;
}
@Overridevoid getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {position = parent.getChildAdapterPosition(view);.top = mSpace;(position % 3 == 0) {.right = mSpace;
}((position + 1) % 3 == 0) {
outRect.left = mSpace;
}
}
Код класса SquareImage.java, позволяющий представлять загруженные фотографии музыкалного салона в виде квадратов для более удобного представления:
public class SquareImage extends ImageView {SquareImage(Context context) {(context);
}SquareImage(Context context, AttributeSet attrs) {(context, attrs);
}SquareImage(Context context, AttributeSet attrs, int defStyleAttr) {(context, attrs, defStyleAttr);
}
@Overridevoid onMeasure(int widthMeasureSpec, int heightMeasureSpec) {.onMeasure(widthMeasureSpec, widthMeasureSpec);
}
} Приложение Б
Программный код, который содержит набор тест кейсов для страницы "muzikalniy salon": package test_cases.fa_tests import test_cases._ import pages.intro_pages._ import pages.fa_pages._ import expert_elements._ import queries._ import pages.pages_constants._ class Fa muzikalniy salon InfoSpec extends ExpertSpec { protected def setup = { IntroPage().new_fa.proceed().chooseManual.selectPeriod(Years.year2013, PeriodTypes.year) } "Click next with empty fields than fill onvd code ‐ all fields" should "be valid" in { val muzikalniy salonInfoPage = setup muzikalniy salon InfoPage.nextPageInactive.click() muzikalniy salon muzikalniy salon InfoPage.checkMuzikalniy salonNameValidation() muzikalniy salonInfoPage.checkOnvdCodeValidation() muzikalniy salonInfoPage.checkOrgTypeValidation() muzikalniy salonInfoPage.onvdCodeSelectorLink.proceed().checkOnvd("15") withWait() {new ExpertText(ByJQ("label[for='muzikalniy salon_title']"))} withWait() {new ExpertText(ByJQ("label[for='org_type']"))} withWait() {new ExpertText(ByJQ("label[for='onvd_code']"))} } "Fill all fields except onvd ‐ validation" should "appear on onvd field" in { val muzikalniy salonInfoPage = setup muzikalniy salonInfoPage.muzikalniy salonTitle.text = OrgName.name muzikalniy salonInfoPage.orgType.select(OrgTypes.ODO) muzikalniy salonInfoPage.nextPageInactive.click() muzikalniy salonInfoPage.checkOnvdCodeValidation() } "Fill all fields, click next than return back ‐ all fields" should "be filled" in { val muzikalniy salonInfoPage = setup muzikalniy salonInfoPage.muzikalniy salonTitle.text = OrgName.name muzikalniy salonInfoPage.orgType.select(OrgTypes.ODO) muzikalniy salonInfoPage.onvdCodeSelectorLink.proceed().checkOnvd("15").nextPage.proceed().backwardLin k.proceed() muzikalniy salonInfoPage.muzikalniy salonTitle.text should be(OrgName.name) muzikalniy salonInfoPage.orgType.getSelected should be(OrgTypes.ODO.toString()) muzikalniy salonInfoPage.onvd.text should be("15. Poisk melodiy") } "Click next with empty fields, fill OrgType than reset and select again OrgType ‐ all fields" should "be valid" in { val muzikalniy salonInfoPage = setup